<?php
/**
【Builder模式的使用场景与效果】
以下情况应当使用建造者模式：
1、 需要生成的产品对象有复杂的内部结构。
2、 需要生成的产品对象的属性相互依赖，建造者模式可以强迫生成顺序。
3、 在对象创建过程中会使用到系统中的一些其它对象，这些对象在产品对象的创建过程中不易得到。

使用建造者模式主要有以下效果：
1、 建造者模式的使用使得产品的内部表象可以独立的变化。使用建造者模式可以使客户端不必知道产品内部组成的细节。
2、 每一个Builder都相对独立，而与其它的Builder无关。
3、 模式所建造的最终产品更易于控制。
 * Created by PhpStorm.
 * User: liangtiehui
 * Date: 2015/12/31
 * Time: 16:16
 */

namespace Builder;

include "Builder.php";
include "ConreteBuilder.php";
include "Director.php";
include "Product.php";

/**
 * 用户执行
 * Class Client
 * @package Builder
 */
class Client
{
    public static function run()
    {
        $builder = new ConreteBuilder();
        $director = new Director($builder);
        $product = $builder->getResult();
        $product->show();
    }
}

Client::run();